---
id: 5900f4991000cf542c50ffab
title: 'Завдання 301: нім'
challengeType: 1
forumTopicId: 301955
dashedName: problem-301-nim
---

# --description--

Нім — це гра з купами каміння, у якій два гравці по черзі беруть будь-яку кількість каменів з будь-якої купи, поки їх зовсім не залишиться.

Розглянемо звичайну версію гри з трьома купами каменів:

- На початку гри є три купи каменів.
- Під час свого ходу гравець забирає будь-яку додатну кількість каменів з будь-якої обраної купи.
- Той, хто першим не зможе зробити хід (тому що не залишилося каменів), програє.

Якщо ($n_1$, $n_2$, $n_3$) вказує позицію в грі з купок розміром $n_1$, $n_2$ та $n_3$, то існує проста функція $X(n_1,n_2,n_3)$ (яку можна знайти або вивести самостійно), яка повертає:

- нуль, якщо за ідеальної стратегії гравець, який збирається зробити хід, програє; або
- не нуль, якщо за ідеальної стратегії гравець, який збирається зробити хід, виграє.

Наприклад, $X(1, 2, 3) = 0$, оскільки незалежно від дій поточного гравця, його опонент може зробити хід, після якого залишаться дві купки однакового розміру, і тоді кожен хід поточного гравця буде повторювати його опонент, поки не закінчаться камені. Тому поточний гравець програє. Для унаочнення:

- поточний гравець ходить на (1,2,1)
- опонент ходить на (1,0,1)
- поточний гравець ходить на (0,0,1)
- опонент ходить на (0,0,0) і виграє.

Скільки натуральних чисел $n ≤ 2^{30}$ задовільняють умову $X(n, 2n, 3n) = 0$?

# --hints--

`nim()` має повернути `2178309`.

```js
assert.strictEqual(nim(), 2178309);
```

# --seed--

## --seed-contents--

```js
function nim() {

  return true;
}

nim();
```

# --solutions--

```js
// solution required
```
